package com.sz.common.core.system.service;

import com.sz.common.core.system.dto.MenuPermissionDto;
import com.sz.common.core.system.entity.Authorization;

import java.util.List;

/**
 * Function: 授权service <br>
 * Author: hpeng.wang <br>
 * Date: 2016-10-26 13:38:00
 */
public interface AuthorizationService {


    /**
     * 根据资源id集合删除相应的授权信息集合
     *
     * @param resIds 资源id集合
     */
    void deleteAuthByResId(List<Integer> resIds);


    /**
     * 根据角色id集合与资源类型(resType) 获取相应的资源信息
     *
     * @param roleIds 角色集合
     * @param resType 资源类型 1：菜单 2：权限项，如果为NULL代表要查询菜单与权限项
     * @return
     */
    List<Authorization> findAuthListByRoleIds(List<Integer> roleIds, Integer resType);

    /**
     * 根据角色id集合与资源类型(resType) 集合从授权表中获取对应的权限id集合
     *
     * @param roleIds 角色集合
     * @param resType 资源类型 1：菜单 2：权限项,不能为NULL
     * @return
     */
    List<Integer> findPermissionIdsByRoleIds(List<Integer> roleIds, Integer resType);

    /**
     * 新增角色所拥有的权限.
     *
     * @param authorization 参数
     */
    int save(Authorization authorization);


    /**
     * 保存当前角色的菜单权限（根据角色id与菜单id集合）
     *
     * @param ids    菜单的id集合
     * @param roleId 对应的角色id
     */
    void saveAuth(List<Integer> ids, Integer roleId);

    /**
     * 删除角色分配的菜单（根据角色id）
     *
     * @param roleId 对应的角色id
     */

    void deleteAuthByRoleId(int roleId);

    /**
     * 保存当前角色的菜单和操作权限（根据角色id与菜单id和Permission集合）
     *
     * @param list
     * @param roleId
     */
    void saveMenuAndPermissionAuth(List<MenuPermissionDto> list, Integer roleId);
}
